function X3D = findTriangulation(P1,P2,X1,X2,K1,K2)
    
    for i=1:size(X1,1)
        
        % Obtain 3D image points   
        xphat = K1\X1(i,1:3)';
        xqhat = K2\X2(i,1:3)';
        
        % Build matrix A 
        A = [xphat(1)*P1(3,:)-P1(1,:);
             xphat(2)*P1(3,:)-P1(2,:);
             xqhat(1)*P2(3,:)-P2(1,:);
             xqhat(2)*P2(3,:)-P2(2,:)];

        % Normalize A
        Anorm = [A(1,:)/norm(A(1,:));
                 A(2,:)/norm(A(2,:));
                 A(3,:)/norm(A(3,:));
                 A(4,:)/norm(A(4,:))];

        % Obtain the 3D point
        [~,~,Van] = svd(Anorm);
        
        X3D(:,i) = Van(:,end);    
                
        % Normalize 3D point to get points NOT in infinity
        %X3D(:,i) = X3D(:,i)./X3D(4,i);  
 
    end;

  

  

